Search is one of the most widely implemented and used features in computing systems. In general, a user searches a dataset by providing a query to a search engine, which attempts to find any data in the dataset which matches the query (known as the “search results”), and then returning to the user a representation of the search results, often in the form of a visual summary of each data record in the search results.
Search engines vary widely in the types of queries they are capable of processing. For example, some search engines (such as those commonly used for searching content on the Web) are capable of processing queries written in a natural language, while other search engines permit or require queries to be written in one or more query languages, such as SQL (Structured Query Language) or AQL (Analytics Query Language).
Regardless of the language in which the user expresses a query, a successful search (i.e., a search which produces search results matching criteria intended by the user to be found, with a minimum of false positives and false negatives) requires the user to create a suitable query. This task can be difficult, particularly when (as in all but trivial cases) the user lacks full knowledge of the content and structure of the dataset being searched. As a result, successfully using a search engine to find desired data often involves constructing an initial query based on educated guesses about the content and structure of the dataset being searched, using that query to produce an initial set of search results, manually reviewing the initial set of search results (which may include a large number of both false positives and false negatives), modifying the initial query based on any insights gained from the manual review of the initial set of search results, and then repeating the search process, possibly multiple times, each time with a further refined query. Such a process is tedious, time-consuming, and prone to error.
What is needed, therefore, are improved techniques for constructing queries for use with search engines.